package ma.myschool.app.service;

import java.util.List;

import ma.myschool.app.model.AnneeScolaire;
import ma.myschool.app.model.MoisPaye;
import ma.myschool.app.model.Paiement;

/**
 * Business Service Interface to handle communication between web and
 * persistence layer.
 *
 * @author <a href="mailto:dan@getrolling.com">Dan Kibler </a>
 */
public interface PaiementManager extends GenericManager<Paiement, Long> {

	/**
	 * get list paiements by eleve
	 * @param idEleve
	 * @param anneeScolaire 
	 * @return
	 */
	List<Paiement> loadPaiementsByEleve(Long idEleve, AnneeScolaire anneeScolaire);

	List<Paiement> loadPaiementsWithResteByEleve(Long id);

	Number sumAvancePaiements(AnneeScolaire anneeScolaire);

	Number sumAvancePaimentParMois(MoisPaye moisPaye, AnneeScolaire anneeScolaire);

	Number sumRestePaimentParMois(MoisPaye moisPaye, AnneeScolaire anneeScolaire);

	Number sumAllPaiementsPrevu();

	Number sumAllRestePaiement(AnneeScolaire anneeScolaire);
	
	Paiement save(Paiement paiement);

}
